package com.ftg.learn.chapter07.back;

import java.sql.Array;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author kangjx
 * @createTime 2022/7/5
 */
public class HomeWork {

    /**
     * 1:现在集合里面元素为: 12,4,5,123,56,78,90,45 求当前集合里面是否有101
     * 2: 对上面的集合进行排序操作
     * 3：生成一个子集合，返回1集合里面的所有大于60的元素。
     * 4：现有一个字符串集合 ["abc","def","efg","fgt"]列出所有集合里面元素 ，当中和2位为b的所有元素.
     * 5：现在两个集合，请完成两个集合的合并操作[1,2,3] [4,5,6] 返回[1,2,3,4,5,6]
     */

    /**
     *
     * @param list1
     * @param target
     */
    public Integer q1(List<Integer> list1,int target){
        for(Integer t : list1){
            if(t == target){
                return t;
            }
        }
        return -1;
    }

    public boolean q11(List<Integer> list1,int target){
       return list1.contains(target);
    }

    public int q12(List<Integer> list1,int target){
        return list1.indexOf(target);
    }

    public int q13(List<Integer> list1,int target){
        return list1.lastIndexOf(target);
    }


    public int q14(List<Integer> list1,int target){
        //有序数组
        list1.sort((x,y)->x-y);
        //练习一下
        for(int left = 0,right = list1.size() -1;left<=right;){
            //中间下标
            int center = (left + right) >>> 1;
            //中间值
            int val = list1.get(center);
            if(val < target){
                left = center + 1;
            }else if(val > target){
                right = center-1;
            }else{
                return center;
            }
        }
        return -1;
    }

    public int q15(List<Integer> list1,int target){
        Integer[] as = new Integer[list1.size()];
        as = list1.toArray(as);
        Arrays.sort(as);
        return Arrays.binarySearch(as,target);
    }

    public int q2(List<Integer> list1,int target){
        Collections.sort(list1);
        return Collections.binarySearch(list1,target);
    }

    public int q21(List<Integer> list1,int target){
        Collections.sort(list1);
        return Collections.binarySearch(list1,target);
    }

    public int q22(List<Integer> list1,int target){
        return Collections.binarySearch(list1,target);
    }

    public List<Integer> q3(List<Integer> list1,int target){
//        return list1.stream().map((t)->{
//            if(t > target){
//                return t;
//            }else{
//                return -1 ;
//            }
//        }).collect(Collectors.toList());
        return list1.stream().filter(x->x>target).collect(Collectors.toList());
//        List<Integer> relist = new ArrayList<>();
//        for (int i = 0; i < list1.size(); i++) {
//            if(list1.get(i) > target){
//                relist.add(list1.get(i));
//            }
//        }
//        return relist;
    }

    public List<String> q4(List<String> list,int index,String c){
//        List<String> stringList = new ArrayList<>();
//        for(int i = 0,len = list.size();i < len;i++){
//            if(list.get(i).indexOf(c,index) > -1){
//                stringList.add(list.get(i));
//            }
//        }
//        return stringList;
        return list.stream().filter(x->x.indexOf(c,index) > -1).collect(Collectors.toList());
    }


    public List<String> q5(List<String> list1,List<String> list2){
        list1.addAll(list2);
        return list1;
    }

    public static void main(String[] args) {
//        List<String> str = new LinkedList<>();
//        str.add("dfs");
//        str.add("fdsadf");
//        str.add("aabcc");
//        str.add("abc");
//        HomeWork hw = new HomeWork();
//        System.out.println(hw.q4(str, 1, "b"));
//
//        Map<String,Object> m = new HashMap<>();
//        m.put("name","康加修");
//        m.put("name","张三");

//        List<Integer> list1 = new ArrayList<>();
//        list1.add(213);
//        list1.add(100);
//        list1.add(2);
//        list1.add(3);
//        list1.add(4);
//        list1.add(5);
//        list1.add(6);
//        HomeWork hw = new HomeWork();
//        System.out.println(hw.q3(list1, 60));
//
//        long n = list1.stream().filter(x->x>4).count();
//        System.out.println(n);
//
//        System.out.println("abcdefghijk".indexOf("cd",3));

        List nm = new LinkedList();
    }
}
